In a technique referred to as memory-mapping, a computer system maps some portion of a file or other information item into virtual memory. The computer system then accesses the file via the virtual memory. More specifically, each application process which interacts with a memory-mapped file will create its own private instance of virtual memory resources for use in interacting with the file. For instance, each process will create its own copy of page tables for use in interacting with the file. A process will destroy its private instance of the resources when it is finished using them.
Consider the particular case in which the computer system uses DRAM in conjunction with a flash storage device or other bulk-erase type block storage device to interact with a file. In that case, the computer system first consults the page tables associated with a process to determine whether a specified virtual address is currently resident in main memory. If not, the computer system may use a file system to map the specified address to a location in secondary storage. A flash translation layer provided by the flash storage device next converts the address provided by the file system to the actual physical location at which the desired data item is stored in the flash storage device. Hence, the computer system performs three levels of address translation when it encounters a page fault.